﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data.SqlClient;
using System.Data;

/// <summary>
/// Summary description for ModeloCrearNuevoProyecto
/// </summary>
public class ModeloCrearNuevoProyecto
{

    private String nombreProyecto;
    public String idNombreCreador;
    private static String errorCode;
    private Conexion conn;
    private static String dataMsg;
    private static String opMsg;

    public ModeloCrearNuevoProyecto()
	{
        conn = new Conexion();
        nombreProyecto = "";
	}

    public String getErrorCode()
    {
        return errorCode;
    }
    
    public String getDataMsg()
    {
        return dataMsg;
    }

    public String getOpMsg()
    {
        return opMsg;
    }

    public void setDataMsg(String m)
    {
        dataMsg = m;
    }

    public void setOpMsg(String m)
    {
        opMsg = m;
    }

    public void setNombreProyecto(String m)
    {
        nombreProyecto = m;
    }

    public void setErrorCode(String m)
    {
        errorCode = m;
    }


    public int validarModelo(String descripcion)//codigos de error 0:campo vacio o nulo, -1:campo muy largo , -2: el nombre existe en la base de datos
                                //-3:Error en la conexion a la BD  1:tudo bem
    {
        if (nombreProyecto == null || nombreProyecto.Length <= 0)
        {
            return 0;
        }

        if (nombreProyecto.Length > 100)
        {
            return -1;
        }

        if (descripcion == null || descripcion.Length <= 0)
        {
            return -4;
        }

        if (descripcion.Length > 300)
        {
            return -5;
        }

        try
        {
            bool conectar = conn.iniciarConexion();
            if (conectar)
            {

                SqlCommand cmd = new SqlCommand("verificarNombreProyecto", conn.getConn());
                cmd.CommandType = CommandType.StoredProcedure;

                cmd.Parameters.Add(new SqlParameter("@nombreProyecto",
                                                           SqlDbType.VarChar,
                                                           40,
                                                           "nombreProyecto"
                                                        )
                                        );


                cmd.Parameters.Add(new SqlParameter("@outParam",
                                                           SqlDbType.Int,
                                                           0,
                                                           ParameterDirection.Output,
                                                           false,
                                                           0,
                                                           0,
                                                           "outParam",
                                                           DataRowVersion.Default,
                                                           null
                                                        )
                                        );

                cmd.Parameters[0].Value = nombreProyecto;
                cmd.UpdatedRowSource = UpdateRowSource.OutputParameters;

                int per = cmd.ExecuteNonQuery();

                int result = (int)cmd.Parameters["@outParam"].Value;
                
                conn.terminarConexion();

                if (result != -1)
                {
                    return -2;
                }

                else
                {
                    return 1;
                }

            }

            else
            {
                conn.terminarConexion();
                return -3;
            }
        }

        catch (Exception exc)
        {
            return -3;
        }
    
    }

    public bool obtenerIdUsuario(String nombreUsuario)
    {
        try
        {

            bool connected = conn.iniciarConexion();

            if (connected == true)
            {
                String query = "SELECT USUARIO.IDUSUARIO FROM USUARIO WHERE USUARIO.NOMBREUSUARIO = " + "'" + nombreUsuario + "'";
                SqlDataReader rows = null;
                SqlCommand comm = new SqlCommand(query, conn.getConn());
                rows = comm.ExecuteReader();
                while(rows.Read())
                {
                    idNombreCreador = rows[0].ToString();    
                }
                
                return true;
            }
            else return false;
        }

        catch (Exception exc)
        {
            return false;
        }
    }


    public bool insertNuevoProyecto(String idTipoProyecto, DateTime fecha, String descripcion)
    {
        try
        {

            bool connected = conn.iniciarConexion();

            if (connected == true)
            {
                int result2 = 0;
                String query = "INSERT INTO PROYECTO ( IDTIPOPROYECTO , IDESTADOPROYECTO, IDUSUARIO , NOMBREPROYECTO , FECHACREACIONPROYECTO , DESCRIPCIONPROYECTO) VALUES ("+idTipoProyecto+" , 1 , "+idNombreCreador+" , '"+nombreProyecto+"' , "+" GETDATE() "+" , '"+descripcion+"')"; 
                SqlCommand comm1 = new SqlCommand(query,
                                                 conn.getConn());

                //SqlCommand comm1 = new SqlCommand("INSERT INTO PROYECTO ( IDTIPOPROYECTO , IDUSUARIO , NOMBREPROYECTO , FECHACREACIONPROYECTO , DESCRIPCIONPROYECTO , ESTADOPROYECTO , FECHAFINALIZACIONPROYECTO) VALUES ( 11 , 2 , 'caca97' , 0 , 'cACc' , 0 , 0)" , conn.getConn());
                //result cero!!!!
                result2 = comm1.ExecuteNonQuery();


                if (result2 == 0)
                {
                    conn.terminarConexion();
                    return false;
                }

                conn.terminarConexion();
                return true;

            }

            else
            {
                conn.terminarConexion();
                return false;
            }
        }

        catch (Exception exc)
        {

            return false;
        }
    }

    public DataTable getTipoProyectos()
    {
        try
        {

            DataTable dt = new DataTable();

            DataColumn c1 = new DataColumn();
            c1.ColumnName = "Nombre";
            DataColumn c2 = new DataColumn();
            c2.ColumnName = "id";

            dt.Columns.Add(c1);
            dt.Columns.Add(c2);
           

            String query = "SELECT TIPO_PROYECTO.NOMBRETIPOPROYECTO , TIPO_PROYECTO.IDTIPOPROYECTO " +
                           "FROM TIPO_PROYECTO WHERE TIPO_PROYECTO.NOMBRETIPOPROYECTO != 'Remanente'";

            //String query = "SELECT TIPO_PROYECTO.NOMBRETIPOPROYECTO , TIPO_PROYECTO.IDTIPOPROYECTO " +
            //               "FROM TIPO_PROYECTO ";

            bool connected = conn.iniciarConexion();

            if (connected == true)
            {
                SqlDataReader rows = null;
                SqlCommand comm = new SqlCommand(query, conn.getConn());
                rows = comm.ExecuteReader();
                while (rows.Read())
                {
                    DataRow r = dt.NewRow();
                    r["Nombre"] = rows[0].ToString();
                    r["id"] = rows[1].ToString();
                    dt.Rows.Add(r);
                    
                }

                conn.terminarConexion();

                return dt;
            }

            else
            {

                conn.terminarConexion();
                return null;
            }
        }

        catch (Exception exc)
        {
            
            return null;
        }

    }
}